Telegram Group & Telegram Channel
⚙️ Как проверить, что WeakReference «отпустила» объект

В .NET слабые ссылки позволяют ссылаться на объект, не препятствуя сборщику мусора его удалить. Это полезно в кэшах, пулах объектов и других случаях, где важно избегать утечек памяти.

Но как проверить, что объект удаляется?

Можно использовать пример:
class MyObject
{
~MyObject()
{
Console.WriteLine("MyObject был удалён сборщиком мусора");
}
}

class Program
{
static void Main()
{
WeakReference weakRef = test();

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();

Console.WriteLine("После сборки мусора: " + (weakRef.IsAlive ? "Жив" : "Удалён"));
}

static WeakReference test() {
var obj = new MyObject();
WeakReference weakRef = new WeakReference(obj);
Console.WriteLine("До удаления ссылки: " + (weakRef.IsAlive ? "Жив" : "Удалён"));
return weakRef;
}
}


IsAlive показывает, жив ли объект.

GC.Collect() + GC.WaitForPendingFinalizers() заставляют сборщик мусора немедленно освободить неиспользуемые объекты.

• Деструктор ~MyObject() позволяет наглядно убедиться, что объект удалён.

Метод IsAlive может показывать, что объект жив даже после GC.Collect(), если объект ещё не финализирован или находится в очереди на финализацию.

Для надёжности можно использовать TryGetTarget вместо IsAlive.

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/csharpproglib/5856
Create:
Last Update:

⚙️ Как проверить, что WeakReference «отпустила» объект

В .NET слабые ссылки позволяют ссылаться на объект, не препятствуя сборщику мусора его удалить. Это полезно в кэшах, пулах объектов и других случаях, где важно избегать утечек памяти.

Но как проверить, что объект удаляется?

Можно использовать пример:

class MyObject
{
~MyObject()
{
Console.WriteLine("MyObject был удалён сборщиком мусора");
}
}

class Program
{
static void Main()
{
WeakReference weakRef = test();

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();

Console.WriteLine("После сборки мусора: " + (weakRef.IsAlive ? "Жив" : "Удалён"));
}

static WeakReference test() {
var obj = new MyObject();
WeakReference weakRef = new WeakReference(obj);
Console.WriteLine("До удаления ссылки: " + (weakRef.IsAlive ? "Жив" : "Удалён"));
return weakRef;
}
}


IsAlive показывает, жив ли объект.

GC.Collect() + GC.WaitForPendingFinalizers() заставляют сборщик мусора немедленно освободить неиспользуемые объекты.

• Деструктор ~MyObject() позволяет наглядно убедиться, что объект удалён.

Метод IsAlive может показывать, что объект жив даже после GC.Collect(), если объект ещё не финализирован или находится в очереди на финализацию.

Для надёжности можно использовать TryGetTarget вместо IsAlive.

🐸Библиотека шарписта #буст

BY Библиотека шарписта | C#, F#, .NET, ASP.NET




Share with your friend now:
tg-me.com/csharpproglib/5856

View MORE
Open in Telegram


Библиотека шарписта | C F NET ASP NET Telegram | DID YOU KNOW?

Date: |

Telegram announces Anonymous Admins

The cloud-based messaging platform is also adding Anonymous Group Admins feature. As per Telegram, this feature is being introduced for safer protests. As per the Telegram blog post, users can “Toggle Remain Anonymous in Admin rights to enable Batman mode. The anonymized admin will be hidden in the list of group members, and their messages in the chat will be signed with the group name, similar to channel posts.”

Telegram hopes to raise $1bn with a convertible bond private placement

The super secure UAE-based Telegram messenger service, developed by Russian-born software icon Pavel Durov, is looking to raise $1bn through a bond placement to a limited number of investors from Russia, Europe, Asia and the Middle East, the Kommersant daily reported citing unnamed sources on February 18, 2021.The issue reportedly comprises exchange bonds that could be converted into equity in the messaging service that is currently 100% owned by Durov and his brother Nikolai.Kommersant reports that the price of the conversion would be at a 10% discount to a potential IPO should it happen within five years.The minimum bond placement is said to be set at $50mn, but could be lowered to $10mn. Five-year bonds could carry an annual coupon of 7-8%.

Библиотека шарписта | C F NET ASP NET from sg


Telegram Библиотека шарписта | C#, F#, .NET, ASP.NET
FROM USA